package com.ayf.payment.game.api.mapper;

import com.ayf.payment.game.api.dto.AuditedMerchantDTO;
import com.ayf.payment.game.api.dto.LowerMerchantDTO;
import com.ayf.payment.game.api.dto.MerchantCommonDTO;
import com.ayf.payment.game.api.dto.MerchantDTO;
import com.ayf.payment.game.api.dto.criteria.LowerMerchantCriteria;
import com.ayf.payment.game.api.dto.criteria.MerchantCriteria;
import com.ayf.payment.game.api.dto.platform.MerchantSettleDTO;
import com.ayf.payment.game.api.entity.Merchant;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

public interface MerchantMapper extends Mapper<Merchant> {

    /**
     * 查询出所有商户
     *
     * @return
     */
    List<MerchantDTO> selectAllMerchant(@Param("m") MerchantCriteria merchantCriteria);

    /**
     * 查询出待审核商户
     *
     * @return
     */
    List<AuditedMerchantDTO> selectAuditedMerchant();

    /**
     * 批量更新商户类型为普通商户
     *
     * @return
     */
    int updateMerchantTypes(@Param("ids") List<Integer> ids);

    /**
     * 查询出所有下级商户
     *
     * @return
     */
    List<LowerMerchantDTO> selectAllLower(@Param("lower") LowerMerchantCriteria lower);

    /**
     * 查询出商户详细信息
     *
     * @param merchantId
     * @return
     */
    LowerMerchantCriteria selectMerchantInfo(@Param("merchantId") Integer merchantId);

    /**
     * 查询出商户详细配置信息
     *
     * @param merchantId
     * @return
     */
    MerchantDTO selectMerchantDTO(@Param("merchantId") Integer merchantId);

    /**
     * 查询出代理商id集合
     *
     * @return
     */
    List<Integer> selectProxyIds();

    /**
     * 重置密码
     *
     * @return
     */
    int resetPassword(@Param("merchant") MerchantCriteria merchantCriteria);

    /**
     * 解绑手机号
     *
     * @param merchantId
     * @return
     */
    boolean untieMobile(@Param("merchantId") Integer merchantId);

    MerchantCommonDTO getMerchantCommon(@Param("merchantId") Integer merchantId);

    List<MerchantSettleDTO> getSettleList(@Param("date") Integer date, @Param("merchantId") Integer merchantId);

}